%kfold+fully connected feedforward network
clc
clear all
load Gammapre_Noneinput
load output_YBOCS_None
load idx_GammaNone3
input=Gammapre_Noneinput(:,[8,3,4]);
target1=output_YBOCS_None; 
 x=input';
 t=target1;
K = 12;
% clear net
CrossValIndices = crossvalind('Kfold', 12, K);
for i = 1: K
    display(['Cross validation, folds ' num2str(i)])
    IndicesI = CrossValIndices==i;
    TempInd = CrossValIndices;
    TempInd(IndicesI) = [];
    xTraining = x(:,CrossValIndices~=i);
    tTrain = t(:,CrossValIndices~=i);
      xTest = x(:,CrossValIndices ==i);
      tTest = t(:,CrossValIndices ==i);
      
 net = feedforwardnet([35 20 5 2],'traincgf'); %'traincgf' 'traingd'
% net = fitnet([10 8 2]); %'traincgf' 'traingd'
net = train(net,xTraining,tTrain);
% net = feedforwardnet([30 20 1]);
% net = train(net,xTest,tTest);

y(i,:) = net(xTest);
y1=round(y);
perf (i) = perform(net,tTest,y1(i))
% perf (i) = perform(net,tTest,y(i))
tTest1(:,i)=tTest;

end


rmse=sqrt(perf);
display(['Y Model=  ' num2str(y1')]) 
% display(['Y Model=  ' num2str(y')]) 
display(['Target=   ' num2str(tTest1)])
disp(['Expected Error= ',num2str(max (t)*0.1)])
display(['perform= ' num2str(perf)]) 
display(['Mean perform= ' num2str(mean(perf))]) 
display(['RMSE= ' num2str(rmse)]) %mean(perf)
display(['mean RMSE= ' num2str(mean(rmse))]) %mean(perf)
% fitn=y1(1);
% end